/*
  学习目标：枚举与字面量+联合类型的区别
  相似：都是表示一组可选的取值范围

  不同：
    1. 枚举的值，只能是字符串或数字
    2. 字面量类型的值可以是任意类型
  
    使用场景：
    1. 👍字面量联合类型，更灵活，更容易扩招，优先考虑
    2. 如果可选范围值，不会变化，可以用枚举。变化不够灵活

*/

enum Status2 {
  Add = 'add',
  Pass = 'del',
  Draft = 'update',
}

type ActionType =
  | { type: 'todo/add'; payload: { isDone: boolean; id: number; task: string } }
  | { type: 'todo/del'; payload: number }
  | { type: 'todo/update'; payload: number };

function reducer(state: any, action: ActionType) {}

reducer(1, { type: 'todo/add', payload: { id: 1, isDone: false, task: '学习TS' } });
reducer(1, { type: 'todo/del', payload: 2 });
reducer(1, { type: 'todo/update', payload: 1 });
